Import & Settings

Utility Functions

Heatmap Functions

Parameter Search Functions

Data Ingetion Functions

Fetching Stock Data

Define Universe of Stocks

Download Stock Data

ohlcv_df = get_symbols(
    symbols=tickers,
    begin_date=start,
    end_date=end,
    trans=True,
    verbose=False
)

ohlcv_df.to_csv('./Data/112_ohlcv_stock_etf_mix_2014-01-01-2021-08-31.csv')

Engineer New Features

Create Portfolio Variables

EDA

Stock Universe Rolling Quarterly Correlation To the Market & Individual Constituent Variance

Profile DataFrame to Describe Each Stock in The Universe

Univariate Stock Profile Variable Analysis

Create a Copy & Scale

Correlations

Pairplot

Find Best $k$

LLE

UMAP

TSNE

Here we use linear and non-linear dimensionality reduction techniques as well as the Kmeans & Hierarchical clustering methods to find the best set of parameters to maximize the silhouette coefficient for our stock universe.

Parameter Search Results

Kmeans Clustering

PCA

UMAP

Cluster membership counts

Plot Data & Labels

Profiles of thes clusters

Table
Boxplot

Max Sharpe Ratio Cluster

Extract Stocks

Robust Cluster Returns Covariance Estimation

Clustermap

Fit PCA

Skree Plot

Extract Eigen Portfolios

Plot Portfolio Weights
Plot Eigen Portfolio Returns

LLE

TSNE

Agglomerative Clustering

TSNE Projection

UMAP Projection

DBSCAN

PCA

qs.reports.html( stock, #"SPY", title=f'252_63_PCA_Kmeans', output=f'./Data/252_63_PCA_Kmeans.html' )